1️⃣ Introducción

Este análisis tiene como objetivo calcular probabilidades condicionales en el dataset Oral Cancer Prediction, respondiendo preguntas como:

✔ ¿Cuál es la probabilidad de tener un diagnóstico positivo de cáncer si el paciente fuma? ✔ ¿Cómo influye el consumo de alcohol en el diagnóstico?

Estos cálculos son clave para evaluar factores de riesgo y mejorar la toma de decisiones en salud.

2️⃣ Carga de Librerías y Configuración

# 📌 Cargar configuración global
# Contiene rutas de directorios, opciones de visualización y otros parámetros relevantes
install.packages("here",dependencies=TRUE)
library(here)
source(here("reportes/Proy_Oral_Cancer_Prediction/00_CONFIGURACION.r"))
# 📌 Cargar librerías necesarias
library(here)           # Manejo de rutas dinámicas
library(janitor)        # Limpieza de nombres de columnas
library(summarytools)   # Resumen estadístico detallado
library(ggplot2)        # Gráficos
library(dplyr)          # Manipulación de datos
library(plotly)         # Gŕaficos Interactivos

# 📌 Configuración de gráficos globales
theme_set(theme_minimal())

# 📌 Cargar scripts de preprocesamiento
source(here("scripts/utils.r"))
source(here("scripts/1_preprocesamiento_esp_dataset.r"))
source(here("scripts/3_analisis_probabilidad.r"))
# 📌 Cargar dataset limpio
dataset_oral_cancer <- preprocesar_datos(here("datasets/oral_cancer_data_limpio.csv"), "Oral Cancer")
## 📥 Cargando datos del proyecto: Oral Cancer 
## 🧹 Realizando limpieza de datos...
## 📊 Aplicando preprocesamiento específico para Oral Cancer...
## ✅ Preprocesamiento completado para: Oral Cancer

3️⃣ Cálculo de Probabilidades Condicionales

Analizamos la relación entre factores de riesgo y diagnóstico temprano de cáncer.

📌 Probabilidad de Diagnóstico Positivo dado que el Paciente Fuma

# Calcular probabilidades
resultados_tobacco <- calcular_probabilidades(
  data = dataset_oral_cancer,
  condicionante = "tobacco_use",
  objetivo = "early_diagnosis"
)

# Mostrar resultados
cat("Tabla de contingencia:\n")
## Tabla de contingencia:
print(resultados_tobacco$tabla_contingencia)
## # A tibble: 4 × 3
##   tobacco_use early_diagnosis     n
##   <fct>       <fct>           <int>
## 1 No          No               7775
## 2 No          Yes              9158
## 3 Yes         No              30639
## 4 Yes         Yes             37350
cat("\nProbabilidades condicionales:\n")
## 
## Probabilidades condicionales:
print(resultados_tobacco$probabilidades_condicionales)
## # A tibble: 4 × 4
##   tobacco_use early_diagnosis     n prob_condicional
##   <fct>       <fct>           <int>            <dbl>
## 1 No          No               7775            0.459
## 2 No          Yes              9158            0.541
## 3 Yes         No              30639            0.451
## 4 Yes         Yes             37350            0.549
cat("\nProbabilidades marginales de early_diagnosis:\n")
## 
## Probabilidades marginales de early_diagnosis:
print(resultados_tobacco$probabilidades_marginales)
## # A tibble: 2 × 3
##   early_diagnosis     n prob_marginal
##   <fct>           <int>         <dbl>
## 1 No              38414         0.452
## 2 Yes             46508         0.548

📌 Probabilidad de Diagnóstico Positivo dado que el Paciente Consume Alcohol

# Calcular probabilidades para alcohol_consumption y early_diagnosis
resultado_alcohol <- calcular_probabilidades(
  data = dataset_oral_cancer,
  condicionante = "alcohol_consumption",
  objetivo = "early_diagnosis"
)

# Mostrar resultados
cat("\nProbabilidad de diagnóstico positivo dado que el paciente consume alcohol:\n")
## 
## Probabilidad de diagnóstico positivo dado que el paciente consume alcohol:
prob_positivo_alcohol <- resultado_alcohol$probabilidades_condicionales %>%
  filter(alcohol_consumption == "Yes", early_diagnosis == "Yes") %>%
  pull(prob_condicional)
print(prob_positivo_alcohol)
## [1] 0.5474391
cat("\nTabla de contingencia para alcohol_consumption y early_diagnosis:\n")
## 
## Tabla de contingencia para alcohol_consumption y early_diagnosis:
print(resultado_alcohol$tabla_contingencia)
## # A tibble: 4 × 3
##   alcohol_consumption early_diagnosis     n
##   <fct>               <fct>           <int>
## 1 No                  No              15361
## 2 No                  Yes             18622
## 3 Yes                 No              23053
## 4 Yes                 Yes             27886
cat("\nProbabilidades condicionales:\n")
## 
## Probabilidades condicionales:
print(resultado_alcohol$probabilidades_condicionales)
## # A tibble: 4 × 4
##   alcohol_consumption early_diagnosis     n prob_condicional
##   <fct>               <fct>           <int>            <dbl>
## 1 No                  No              15361            0.452
## 2 No                  Yes             18622            0.548
## 3 Yes                 No              23053            0.453
## 4 Yes                 Yes             27886            0.547
cat("\nProbabilidades marginales de early_diagnosis:\n")
## 
## Probabilidades marginales de early_diagnosis:
print(resultado_alcohol$probabilidades_marginales)
## # A tibble: 2 × 3
##   early_diagnosis     n prob_marginal
##   <fct>           <int>         <dbl>
## 1 No              38414         0.452
## 2 Yes             46508         0.548

4️⃣ Visualización de Resultados

Generamos gráficos interactivos para una mejor interpretación de los datos.

# Visualizar probabilidades condicionales
p_tobacco <- visualizar_probabilidad_condicional(
  data = dataset_oral_cancer,
  condicionante = "tobacco_use",
  objetivo = "early_diagnosis",
  titulo = "Probabilidad de Diagnóstico Temprano según Uso de Tabaco",
  xlab = "Uso de Tabaco",
  guardar = TRUE,
  ruta_guardado = here("reportes/Proy_Oral_Cancer_Prediction/resultados_generados/probabilidad_condicional_tobacco.png")
)

# Mostrar gráfico interactivo
p_tobacco
# Visualizar probabilidades condicionales
p_alcohol <- visualizar_probabilidad_condicional(
  data = dataset_oral_cancer,
  condicionante = "alcohol_consumption",
  objetivo = "early_diagnosis",
  titulo = "Probabilidad de Diagnóstico Temprano según Consumo de Alcohol",
  xlab = "Consumo de Alcohol",
  guardar = TRUE,
  ruta_guardado = here("reportes/Proy_Oral_Cancer_Prediction/resultados_generados/probabilidad_condicional_alcohol.png")
)

# Mostrar gráfico interactivo
p_alcohol
p_tumors_vs_treatment <- visualizar_probabilidad_condicional(
  data = dataset_oral_cancer,
  condicionante = "treatment_type",
  objetivo = "tumor_size_cm",
  titulo = "Probabilidad tamaño del tumor según tratamiento ",
  xlab = "Género",
  guardar = TRUE,
  ruta_guardado = here("reportes/Proy_Oral_Cancer_Prediction/resultados_generados/probabilidad_condicional_tumorsize_vs_treatment.png"),
  bins = 5  # Dividir en 5 intervalos
)

# Mostrar gráfico interactivo
p_tumors_vs_treatment